/**
 * Description:
 * Class Name:LambdaQs
 * Date:2022/2/11 15:55
 *
 * @author LTisme
 * @version JAVA17
 */
package 疯狂Java讲义.第6章_面向对象_下._6_8_Java11增强的lambda表达式._6_8_1_Lambda表达式入门;

interface Eatable{
    void taste();
}

interface Flyable{
    void fly(String weather);
}

interface Addable{
    int add(int a, int b);
}

public class LambdaQs {
    // 调用该方法需要Eatable对象
    public void eat(Eatable e){
        System.out.println(e);
        e.taste();
    }

    // 调用该方法需要Flyable对象
    public void drive(Flyable f){
        System.out.println("我正在驾驶：" + f);
        f.fly("【碧空如洗的晴日】");
    }

    // 调用该方法需要Addable对象
    public void test(Addable add){
        System.out.println("5与3的和为：" + add.add(5,3));
    }

    public static void main(String[] args) {
        var lq = new LambdaQs();
        // lambda表达式只有一条语句，可以省略花括号
        lq.eat(() -> System.out.println("苹果味道不错！"));
        // lambda表达式形参列表只有一个形参，可以省略圆括号
        lq.drive(weather -> {
            System.out.println("今天天气是：" + weather);
            System.out.println("直升机平稳飞行");
        });
        lq.test(((a, b) -> a + b));
    }
}
